perm filename NEWLST.SAI[LOU,BGB] blob
sn#124056 filedate 1974-12-08 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "ADRLST"
C00003 00003 INST←'67100000000
C00005 00004 ICOUNT←0
C00007 00005 OPEN (2,"LPT",0,0,10,120,BREAK,EOF)
C00009 ENDMK
C⊗;
BEGIN "ADRLST"
STRING BLANKS,ADDRESS,S,JS;
REQUIRE 10000 STRING_SPACE;
SAFE STRING ARRAY TAG[1:1000];
SAFE INTEGER ARRAY PTR,ZIP[1:1000];
SAFE STRING ARRAY PS[1:6];
INTEGER LAST,MAX,MIN,INST,ICOUNT,COUNT,I,J,K,BREAK,EOF;
LABEL LPT,L11,L1,L2;
BOOLEAN TEST;
INST←'67100000000;
SETFORMAT(4,0);
BLANKS←" ";
OPEN (1,"DSK",0,3,0,120,BREAK,EOF);
L2: OUTSTR("FILE ?
");
S←INCHWL;
IF EQU(S,NULL) THEN LOOKUP(1,"MUSIC.ADR",TEST) ELSE LOOKUP(1,S,TEST);
IF TEST THEN BEGIN USERERR(0,1,"FILE NOT FOUND");GO TO L2 END;
OUTSTR ("EXCLUDE ?
");
S←INCHWL;
BREAKSET(2,'15,"O");
BREAKSET(2,S&'12,"I");
OUTSTR ("INCLUDE ?
");
S←INCHWL;
TEST←¬EQU(S,NULL);
SETBREAK(8," ",NULL,"I");
BREAKSET(7,S,"I");
BREAKSET(1,"⊗;","I");
BREAKSET(1,NULL,"N");
BREAKSET(1,'14&'12&'15,"O");
BREAKSET(3,",","I");
BREAKSET(4," ","X");
BREAKSET(4,NULL,"R");
SETBREAK(5,'14,NULL,"I");
SETBREAK(6,'12,'15,"IN");
ICOUNT←0;
JS←INPUT(1,1);
IF BREAK="⊗"
THEN BEGIN DO INPUT(1,5) UNTIL BREAK='14;
L1:JS←INPUT(1,1)
END;
IF ¬EOF THEN BEGIN
IF ¬LENGTH(JS) THEN BEGIN INPUT(1,6); GO TO L1 END;
S←INPUT(1,2);
IF BREAK ≠'12 THEN GO TO L1;
S←SCAN(S,7,BREAK);
IF TEST ∧ BREAK=0 THEN GO TO L1;
ICOUNT←ICOUNT+1;
IF ICOUNT>1000 THEN USERERR(0,1,"INCREASE ARRAY SIZES");
TAG[ICOUNT]←JS;
JS←JS[(LENGTH(JS)-8) TO ∞];
ZIP[ICOUNT]←INTSCAN(JS,I);
GO TO L1 END;
RELEASE (1);
COUNT←0;LAST←-1;
DO BEGIN
MIN←100000;
FOR I←1 STEP 1 UNTIL ICOUNT DO IF LAST<ZIP[I]<MIN THEN MIN←ZIP[I];
LAST←MIN;
FOR I←1 STEP 1 UNTIL ICOUNT DO IF ZIP[I]=MIN THEN PTR[COUNT←COUNT+1]←I;
END UNTIL COUNT=ICOUNT;
OPEN (2,"LPT",0,0,10,120,BREAK,EOF);
OUTSTR(CVS(ICOUNT)&" LABELS, TYPE C/R WHEN READY TO PRINT
");
INCHWL;
LPT:FOR COUNT←1 STEP 1 UNTIL ICOUNT DO BEGIN
ADDRESS←TAG[PTR[COUNT]];
S←SCAN(ADDRESS,3,BREAK);
JS←SCAN(S,8,BREAK);
IF BREAK=" " THEN
BEGIN
SCAN(S,4,BREAK);
S←S&" "&JS
END
ELSE S←JS;
FOR J←1 STEP 1 WHILE J<7 ∧ LENGTH(ADDRESS) DO BEGIN
SCAN(ADDRESS,4,BREAK);
PS[J]←SCAN(ADDRESS,3,BREAK)END;
IF J>6 THEN BEGIN USERERR(0,1,S&"ADDRESS TOO LONG");
GO TO L11 END;
S←" "&S
&'15&'177&'21&" "
&(JS←PS[1])&BLANKS[1 FOR (34 - LENGTH(JS))]
&CVS(COUNT);
FOR K←2 STEP 1 UNTIL J-2 DO S←S&'15&'177&'21&" "&PS[K];
S←S&", "&PS[J-1]&'15&'177&'21;
IF COUNT MOD 11=0 THEN S←S&'15&'14 ELSE FOR K←J STEP 1 UNTIL 6 DO S←S&'15&'177&'21;
OUT(2,S);
START_CODE XCT INST;END;
L11: END;
CLOSE(2);
DO BEGIN OUTSTR("REPEATS ?
");
COUNT←0;
END UNTIL (S←INCHWL)="Y" ∨ S="N";
IF S="Y" THEN WHILE TRUE DO BEGIN
OUTSTR("FROM TO ?");
MIN←INTSCAN(S←INCHWL,I);
IF I=-1 THEN DONE;
MAX←INTSCAN(S,I);
IF I=-1 THEN MAX←MIN;
FOR I←MIN STEP 1 UNTIL MAX DO ZIP[COUNT←COUNT+1]←PTR[I];
END;
ARRBLT(PTR[1],ZIP[1],ICOUNT←COUNT);
IF COUNT THEN GO TO LPT;
OUTSTR("REPLACE PAPER AND TYPE C/R
");
INCHWL;
RELEASE (2);
END "ADRLST";